// 编写一个中间件，将请求参数汇总到 `ctx.params` 对象上
module.exports = async (ctx, next) => {
    // 在目前我们学习阶段，请求分四种：GET（查）、POST（增）、PUT（改）、DELETE（删）
    // 请求方式不同，获取请求参数的方式也不同
    // 所以我们可以将它们统一汇总到一个 ctx 对象的属性上，方便统一获取参数
    // console.log('ctx.method', ctx.method);
    // 对于 GET 请求，一般是获取查询参数，使用 ctx.query
    // console.log('ctx.query', ctx.query);
    // 对于 POST 请求，一般是获取请求体参数，需要借助中间件 koa-bodyparser 去解析请求体的数据
    // 然后从 ctx.request.body 获取解析后的请求体数据
    // 注意，必须在该中间件之前，使用 koa-bodyparser
    // console.log('ctx.request.body', ctx.request.body);
    // 对于 PUT 请求，根据 RESTful 风格路由定义，可能存在【路径参数】、也会存在【请求体参数】
    // 路径参数，我们可以通过 ctx.params 来获取
    // console.log('ctx.params', ctx.params);
    if (ctx.method === 'GET') {
        ctx.params = { ...ctx.query };
    } else if (ctx.method === 'POST' || ctx.method === 'PUT') {
        ctx.params = { ...ctx.request.body };
    }
    // 向下执行，下一个中间件
    await next();
};
